package com.example.service;

import com.example.common.PageResult;
import com.example.common.Result;
import com.example.entity.Role;
import com.example.entity.User;
import com.example.vo.MenuVO;
import com.example.vo.UserWithRoleVO;

import java.util.List;

/**
 * 管理员服务接口
 */
public interface AdminService {
    
    // 用户管理
    Result<List<UserWithRoleVO>> getAllUsers();
    Result<List<UserWithRoleVO>> getUsersByRole(Long roleId);
    Result<Void> addUser(User user);
    Result<Void> updateUser(Long id, User user);
    Result<Void> deleteUser(Long id);
    Result<User> getUserById(Long id);
    Result<List<User>> searchUsers(String keyword, int limit);
    Result<PageResult<User>> searchUsersWithPagination(String keyword, int page, int size);
    
    // 用户角色管理
    Result<List<Long>> getUserRoles(Long userId);
    Result<Void> assignRole(Long userId, Long roleId);
    Result<List<Role>> getUserRoleDetails(Long userId);
    Result<Void> assignRolesToUser(Long userId, List<Long> roleIds);
    
    // 角色管理
    Result<List<Role>> getAllRoles();
    Result<Void> addRole(Role role);
    Result<Void> updateRole(Long id, Role role);
    Result<Void> deleteRole(Long id);
    Result<Role> getRoleById(Long id);
    
    // 菜单管理
    Result<List<MenuVO>> getAllMenus();
    Result<List<Long>> getRoleMenus(Long roleId);
    Result<Void> assignMenu(Long roleId, List<Long> menuIds);
    

} 